<template>
  <div class="person">
    <h2>姓名：{{ name }}</h2>
    <h2>年龄：{{ age }}</h2>
    <h2>vue2：{{ a }}</h2>
    <button @click="changeName">修改名字</button>
    <button @click="changeAge">修改名字</button>
    <button @click="showTel">查看联系方式</button>
  </div>
</template>
<script lang="ts">
export default {
  name: 'PersonV3',
  data() {
    return {a: 100, b: this.age}
  },
  setup() {
    // Vue2 的配置（data、methods）中可以访问到setup中的属性、方法。（因为setup处于beforecreate之前）
    // 但在setup中不能访问到Vue2的配置（data、methods）。
    // 如果与Vue2冲突，则setup优先。
    // console.log(this)//setup函数中的this是undefined，Vue3已经弱化this了
    // 数据原来是写在data中的，此时的name、age、tel都不是响应式的
    let name = '张三'
    let age = 18
    let tel = '12312873911231'

    // 方法
    function changeName() {
      name = 'zhang-san'  //注意这样修改name,页面是没有变化的
      console.log(name)   //name确实改了，但name不是响应式的
    }

    function changeAge() {
      age += 1
      console.log(age)
    }

    function showTel() {
      alert(tel)
    }

    return {name, age, changeName, changeAge, showTel}
    //   setup的返回值也可以是一个渲染函数
    //   return ()=>'哈哈'
  },
}
</script>
<style scoped>
.person {
  background-color: #e7abab;
  box-shadow: 0 0 10px;
  border-radius: 10px;
  padding: 20px;
}

button {
  margin: 0 5px;
}
</style>